package com.macro.mall.service;

import com.macro.mall.common.api.CommonPage;
import com.macro.mall.common.api.CommonResult;
import com.macro.mall.domain.MemberReadHistory;
import com.macro.mall.dto.OmsOrderDetail;
import com.macro.mall.model.UmsIntegrationChangeHistory;
import com.macro.mall.model.UmsMember;
import org.springframework.data.domain.Page;

import java.util.List;

public interface UmsMemberService {


    /**
     * 显示所有用户，根据条件查询
     * @author 高强
     * @Date 2020年9月4日
     * @param umsMember 包含用户名模糊查询，是否会员，普通用户还是分销员
     * @param pageSize
     * @param pageNum
     * @return
     */
    CommonResult<List<UmsMember>> getMemberList(UmsMember umsMember, Integer pageSize, Integer pageNum);

    /**
     * 分销员绑定门店
     * @author 高强
     * @Date 2020年9月4日
     * @param memberId 分销员id
     * @param storeId 门店id
     * @return
     */
    CommonResult bindingStore(long memberId,long storeId);

    /**
     * 创建分销员
     * @author 高强
     * @Date 2020年9月4日
     * @param umsMember
     * @return
     */
    CommonResult createDistributionMember(UmsMember umsMember);

    /**
     * 修改分销员
     * @author 高强
     * @Date 2020年9月4日
     * @param id
     * @param umsMember
     * @return
     */
    CommonResult updateDistributionMember(long id,UmsMember umsMember);

    /**
     * 删除分销员
     * @author 高强
     * @Date 2020年9月4日
     * @param id
     * @return
     */
    CommonResult deleteDistributionMember(long id);

    /**
     * 批量删除分销员
     * @author 高强
     * @Date 2020年9月4日
     * @param ids
     * @return
     */
    CommonResult deleteDistributionMemberList(List<Long> ids);

    /**
     * 根据id获取买家用户详情
     * @param id
     * @return
     */
    CommonResult<UmsMember> getMemberById(Long id);

    /**
     * 根据手机号获取用户信息
     * @param phone
     * @return
     */
    CommonResult<UmsMember> getMemberByPhone(String phone);

    /**
     * 查看客户下单情况
     * @param memberId
     * @param pageNum
     * @param pageSize
     * @return
     */
    CommonResult<CommonPage<OmsOrderDetail>> getOrderByMember(Long memberId, Integer pageNum, Integer pageSize);

    /**
     * 查看客户积分表动情况
     * @param memberId
     * @param pageNum
     * @param pageSize
     * @return
     */
    CommonResult<CommonPage<UmsIntegrationChangeHistory>> getIntegrationHistoryByMember(Long memberId, Integer pageNum, Integer pageSize);

    /**
     * 查看客户浏览商品情况
     * @param memberId
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<MemberReadHistory> getReadProductHistoryByMember(Long memberId, Integer pageNum, Integer pageSize);

    /**
     * 经纪人的佣金订单列表
     * @param agentId
     * @param pageNum
     * @param pageSize
     * @return
     */
    CommonResult<CommonPage<OmsOrderDetail>> getCommissionHistory(Long agentId, Integer pageNum, Integer pageSize);
}
